
package projetjava;

import Composite.Element;
import java.util.Iterator;
import java.util.Observer;
import javax.swing.tree.DefaultMutableTreeNode;


public class MonDefaultMutableTreeNode extends DefaultMutableTreeNode implements Observer{
    
    private static AdaptateurJTree adaptateur;
    
    public MonDefaultMutableTreeNode(Object element,AdaptateurJTree adaptateur) {

        super(element);
        ((Element)element).addObserver(this);
        if(this.adaptateur==null) this.adaptateur=adaptateur;
    }

    public void update(java.util.Observable o, Object arg) {
        
        if(this.getChildCount()<((Element)this.getUserObject()).getChildCount()){
            
            MonDefaultMutableTreeNode fils = new MonDefaultMutableTreeNode(arg,this.adaptateur);
            this.adaptateur.insertNodeInto(fils,this,this.getChildCount());
        }
        else if(this.getChildCount()>((Element)this.getUserObject()).getChildCount()){
            
            MonDefaultMutableTreeNode fils=this.getChildOf(arg);
            if(fils!=null) this.adaptateur.removeNodeFromParent(fils);
        }
    }

    public MonDefaultMutableTreeNode getChildOf(Object el){
        
        Iterator it=this.children.iterator();
        while(it.hasNext()){
            
            MonDefaultMutableTreeNode suiv=(MonDefaultMutableTreeNode)it.next();
            if(suiv.getUserObject().equals(el)) return suiv;
        }
        
        return null;
    }
}
